home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / BOBOLI.ZIP / SRC / README.TXT < prev    next >
Encoding:
Text File  |  1996-06-06  |  7.7 KB  |  135 lines

  1. BOBOLI THE MIGHTY KNIGHT
  2. By Mike Hommel
  3.  
  4.   If you want help on playing the game, see BOBOLI.DOC.
  5.  
  6. This software and all the accompanying goods are supplied AS-IS.  They may
  7. blow up your computer for all I know, and it's not my fault if they do.  You
  8. may do whatever the hell you want with this stuff.  But it would be nice if
  9. you didn't try to claim it as your own, because then everybody would laugh at
  10. you, and you don't want that.
  11.  
  12.   The source is included, in the \SRC subdirectory, oddly enough, and it is
  13. approximately devoid of comments.  You won't get much from looking at it -
  14. sorry, but I didn't really intend this as a lesson in game programming (good
  15. thing, since it really represents a lot of the worst things you can do when
  16. programming).  But the header files are pretty legible (of course I would
  17. think that, I wrote them).  I think GUYS.H is kind of an interesting concept.
  18. It's sort of a script file defining the various characters in the game.  It
  19. should be fairly self explanatory.  Well, not really.  But I tried!
  20.   Known problems: it will crash occasionally citing an interrupt 0x22 (my PC
  21. programming book calls that the Terminate Program interrupt, and terminate it
  22. does), or sometimes just freeze up.  I am pretty much sure that these are a
  23. result of my very poorly written keyboard handler and timer handler.  I just
  24. do NOT get all that __dpmi_stick_stuff_onto_my_procedure() stuff at all.  The
  25. FAQ explains it, but I'm too stupid to follow it.  I need examples.  Anyone
  26. is welcome to fix this problem (also, apparently on SOME faster computers,
  27. the keyboard handler 'sticks' badly - not on any of the ones I've tried, but
  28. my friend claims he has seen it on every computer he tried.  I think this is
  29. also a result of the same problem), and PLEASE send me a copy of the fixes.
  30. I am very used to the syntax of my kb handler, and would hate to have to use
  31. someone else's idea of easy-to-use.
  32.   Also problem: The golems.  They are just too damn stupid to live.  It really
  33. bugs me when they start punching the floor.  It almost gives them a bit of
  34. personality, but not quite.  I am not sure why they are so moronic, but it
  35. probably has a lot to do with the fact that I just threw in the golem stuff at
  36. the last minute, and it really only consists of a few if(kind==golem) 
  37. statements.
  38.   Aside from that, it seems pretty perfect (well, bug-free anyway, I wouldn't
  39. call it perfect).  If you want to modify the networkiness to support some real
  40. type of network (or maybe just a standard modem, which wouldn't be too tough,
  41. I think), you can look for all the calls to the functions listed in com.h
  42. (there are only about 3 functions!), and replace them with your own.
  43.  
  44. Some stuff about the libraries:
  45.  
  46.   These are the libraries I use for everything.  Boy I love my libraries.  I
  47. will probably do away with UMKs in favor of something that stores runs of
  48. pixels for speed for my next game though.  It is awfully wasteful, speedwise,
  49. for me to do what I am doing now.  Anyway, here's info about each library:
  50.  
  51. mgraph: the core library.  Basic graphics stuff.  Screen copying, palettes,
  52.         the usual.  It also defines what a 'byte' is and what a 'word' is.
  53. umk: UMK stands for, egotistically enough, UltraMikon.  They are my sprites.        
  54.      They are stored as an array of 256 of:
  55.        width(byte... I think? no, probably a word)
  56.        height (same deal)
  57.        size of data (word)
  58.        image data... just straight pixels, except when a 0 is encountered, it
  59.          is followed by a run count.  So transparency is RLE'd.
  60.  
  61.      there are about a billion different draw functions in here, see them all
  62.      in umk.h.  Some are a bit tough to comprehend by the name.  Feel free to
  63.      ask, if you care.
  64. timer: the timer library.  VERY simple stuff, and as I mentioned earlier,
  65.        buggy.
  66. mkey: keyboard handler.  Also quite simple, and also buggy.
  67. mfont: font handler.  It's only got one font, and it only handles 6x6 fonts.
  68.        It does very little, but it does all I need.
  69. com: A VERY simple com-port driver.  Sends and receives bytes over the com
  70.      port.  Based very much on Samuel Vincent's svasync library.  If you
  71.      want some high-quality com stuff, THAT's what you need.  It's called
  72.      SVASYNC.ZIP, and you can probably find it at any handy djgpp programming
  73.      site.  It handles interrupt driven transmission, which mine definitely
  74.      does not, and it is FAR more robust and versatile than mine (and
  75.      supports UARTs with FIFO abilities, and so on and so on).
  76.  
  77. SVASYNC can be found at: 
  78.   http://www.delorie.com/djgpp/dl/contrib/svasync.zip
  79.  
  80.   I also have an mflic library if anybody wants some real simple .FLI code.
  81. I mean REAL simple.  But it works, and it's fast(-ish).
  82.  
  83. Miscellaneous stuff that I can think of:
  84.  
  85.   This program uses the __djgpp_nearptr_enable() dealie.  I hear that's bad,
  86. but if the worst thing it can do is make my computer crash if I have a bad
  87. pointer, then fine.  I deserve that if I have a bad pointer.
  88.  
  89.   the \CTR subdirectory contains, conveniently, *.CTR files.  They are just
  90. lists of x,y pairs (signed bytes) which are used to offset the drawing
  91. position of the UMK to which they refer, in order to center it.  For instance,
  92. BOBOLI.CTR contains 256 coordinate pairs which refer to the 256 UMKs in
  93. BOBOLI.UMK, so that I call umk_draw like this:
  94.   
  95.   for(n=0;n<256;n++)
  96.     umk_draw(xpos-bobctr[n].x,ypos-bobctr[n].y,bobumk[n],screen);
  97.  
  98.   and it will draw all the frames of Boboli in order, centered at xpos, ypos.
  99. Note that this is not a true center, it is an arbitrary point I picked, in
  100. this case, it is right between his feet.  This is the point that I want to use
  101. logically as his 'center', since he is vaguely 3d and not a strictly top-view
  102. character.  Then, in the game I can refer to xpos and ypos as his coordinates
  103. for purposes of checking which tile he is in, etc.
  104.  
  105.   The tile graphics should be in a library.  I seem to use them a lot, but
  106. there is always some new twist to them that means I must write new routines
  107. for them.  In this case, the twist was that I decided I didn't want to clip
  108. them, so I made a virtual screen 256x256 (which is a cool idea, for many
  109. reasons, not the least of which is the nifty pixel addressing: x+(y<<8)), and
  110. draw the tiles to that, and then had to make a scrcpy which copies from that
  111. kind of screen to a 320x200 one.
  112.   Speaking of the tiles, there should be a ton more of them.  That map is just
  113. plain BORING.  Speaking of THAT, the map is boring, feel free to enhance it
  114. drastically.  Just don't forget to leave walls all around the edges.  I think
  115. it is undefined what projectiles do if they leave the map (yow, maybe I
  116. shouldn't have left that part where there is water right up to the edge!).
  117.  
  118.   The \UMK directory contains all the umks, and the \PCX directory is rather
  119. obvious.  The stuff in the \MISC directory is:
  120.   LITTLE.FNT: the font file for my adorable 6x6 font
  121.   DARK.MAT: 256 bytes - pointers into my standard palette denoting what
  122.             color to go to from each color if you want it to be darker.
  123.             (explanation: if color 4 is blue and color 8 is dark blue,
  124.                           the fourth byte of this file would be 8.  Get it?)
  125.   HULK.PAL: There's a good reason why it is named this, but this is my usual
  126.             palette, 16 shades of 16 colors (massive waste of space: there
  127.             are 16 true blacks and 16 true whites!).
  128.  
  129.   That's about it.  Questions/comments are welcome to mhommel@calpoly.edu.
  130. However, suggestions on what could be added to the game are NOT welcome -
  131. this game is DONE.  If you want to add something, go ahead, it's out of my
  132. hands.
  133.   By the way, there's no ending- you can keep playing even after you kill the
  134. wizard, so don't start whining about how it refuses to end once he's dead.
  135.